package com.cuntian.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cuntian.dto.LoginDTO;
import com.cuntian.dto.ModifyPwdDTO;
import com.cuntian.dto.RegisterDTO;
import com.cuntian.entity.User;
import com.cuntian.vo.LoginVO;
import com.cuntian.vo.UserVO;

import java.util.List;

public interface IUserService extends IService<User> {
    /**
     * 用户登录
     *
     * @param dto 登录dto
     * @return 登录token
     */
    LoginVO login(LoginDTO dto);


    /**
     * 修改用户密码
     *
     * @param dto 修改密码dto
     */
    void modifyPassword(ModifyPwdDTO dto);

    /**
     * 用户注册
     *
     * @param dto 注册dto
     */
    void register(RegisterDTO dto);

    /**
     * 根据用户名查询用户
     *
     * @param username 用户名
     * @return 用户信息
     */
    List<UserVO>  findUserByUserName(String username);

    /**
     * 更新用户信息，好友昵称和群聊昵称等冗余信息也会更新
     *
     * @param vo 用户信息vo
     */
    void update(UserVO vo);

    /**
     * 根据用户昵id查询用户
     *
     * @param id 用户id
     * @return 用户信息
     */
    UserVO findUserById(Long id);

    /**
     * 根据用户电话查询用户
     *
     * @param phone 用户名或昵称
     * @return 用户信息
     */
    UserVO findUserByPhone(String phone);

    /**
     * 用户退出
     */
    void logOut();


}
